1
고성능 커널을 향한 길
AI023Lesson 2
00:00

고성능 커널을 향한 여정은 작업 중심의 프로그래밍(파이토치 이지어)에서 하드웨어 인식형 프로그래밍으로 전환하는 데서 시작됩니다. 트리톤은 이 여정에서 핵심적인 다리 역할을 합니다.

1. 스택 정의하기

트리톤은 파이썬 문법으로 고성능 사용자 지정 계산 커널을 작성하는 것을 실현 가능한 형태로 설계된 병렬 프로그래밍을 위한 언어이자 컴파일러입니다. 독특한 중간 지점에 위치해 있습니다:

  • 파이토치 이지어: 높은 추상화 수준, 사용이 간편하지만 하드웨어 활용도에 대한 제한된 통제력.
  • CUDA C++: 최대 통제력, 그러나 높은 복잡성(공유 메모리 및 동기화의 수동 관리 필요).
  • 트리톤: 파이썬 같은 문법과 함께 블록 단위 (타일링된) 제어 기능.
파이토치 이지어 (고수준 추상화)트리톤 (블록 단위 / 컴파일러 기반)CUDA / 어셈블리 (저수준)

2. 타일링 파라다임

CUDA는 스레드 단위에서 작동하는 반면, 트리톤은 블록 기반(타일링된) 프로그래밍 모델을 사용합니다. 딥러닝에서는 데이터(행렬, 어텐션 맵)가 자연스럽게 블록 단위로 구성되므로 이는 특히 중요합니다.

3. 성능 오해

흔히 드는 오해는 트리톤이 단순히 '파이토치를 더 빠르게 만든 것'이라고 생각하는 것입니다. 실제로는 별개의 파라다임입니다. 성능 향상은 개발자가 버전 블록을 제거할 수 있는 능력 (예: '메모리 월')을 제거함으로써 데이터를 빠른 내부 메모리(SRAM)에 유지할 수 있도록 연산을 융합함으로써 달성됩니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>